home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Sprite 1984 - 1993
/
Sprite 1984 - 1993.iso
/
src
/
lib
/
include
/
dev
/
RCS
/
ccdev.h,v
< prev
next >
Wrap
Text File
|
1989-04-12
|
5KB
|
232 lines
head 1.3;
branch ;
access ;
symbols ;
locks ; strict;
comment @ * @;
1.3
date 89.04.12.20.35.04; author mendel; state Exp;
branches ;
next 1.2;
1.2
date 88.11.17.09.13.30; author mendel; state Exp;
branches ;
next 1.1;
1.1
date 88.10.17.10.50.03; author mendel; state Exp;
branches ;
next ;
desc
@/dev/cc header file.
@
1.3
log
@Added processed cache controller device.
@
text
@/*
* ccdev.h --
*
* Declarations of SPUR Cache Controller device interface.
*
* Copyright 1988 Regents of the University of California
* Permission to use, copy, modify, and distribute this
* software and its documentation for any purpose and without
* fee is hereby granted, provided that the above copyright
* notice appear in all copies. The University of California
* makes no representations about the suitability of this
* software for any purpose. It is provided "as is" without
* express or implied warranty.
*
* $Header: /sprite/src/lib/include/dev/RCS/ccdev.h,v 1.2 88/11/17 09:13:30 mendel Exp Locker: mendel $ SPRITE (Berkeley)
*/
#ifndef _DEVCC_H
#define _DEVCC_H
#include "spur.md/kernel/mach.h" /* For MACH_MAX_NUM_PROCESSORS */
#include "spur.md/kernel/timerTick.h"
/* constants */
/*
* Cache Controller Mode register bits.
* (see SPUR-MSA page 24-25)
*/
#define MODE_PERF_COUNTER_MASK 0x07
#define MODE_GARTH 0x08
#define MODE_T0_ENABLE 0x10
#define MODE_T1_ENABLE 0x20
#define MODE_T2_ENABLE 0x40
#define MODE_DAVID 0x80
/*
* Mode register performance counters mode bits.
* (MODE_REG & MACH_MODE_PERF_COUNTER_MASK)
* (See SPUR-MSA page 25)
*/
#define MODE_PERF_COUNTER_OFF 0x00
#define MODE_PERF_COUNTER_SNOOP 0x01
#define MODE_PERF_COUNTER_USER 0x05
#define MODE_PERF_COUNTER_SYS 0x06
#define MODE_PERF_COUNTER_BOTH 0x07
#define DEV_CC_MAX_OFFSET sizeof(CCdev) /* Size of CC. */
/*
* User changable mode register bits.
*/
#define DEV_CC_USER_MODE_BITS ((unsigned char) \
~(MODE_T0_ENABLE|MODE_T1_ENABLE|MODE_T2_ENABLE))
/*
* IoControl's for SPUR CC.
*
* IOC_CCDEV_SET_MODE - Set the mode register. Inbuffer should contain a
* single unsigned char specifing the new mode register values. Note that
* only bits specified in DEV_CC_USER_MODE_BITS maybe changed by the user.
* Other bits will be left unmodified.
* IOC_CCDEV_READ_T0 - Do a stable read of the 64bit counter T0. The outBuffer
* contains a devCounter structure.
*/
#define IOC_CCDEV (2 << 16)
#define IOC_CCDEV_SET_MODE (IOC_CCDEV | 0x1)
#define IOC_CCDEV_READ_T0 (IOC_CCDEV | 0x2)
/* data structures */
/*
* CCdevCounters - Memory image of Cache Controller counter registers C0-C15.
*/
typedef struct CCdevCounters {
unsigned int value; /* Value of counter. */
unsigned int padding; /* Padding (not used). */
} CCdevCounters;
/*
* CCdevRTPM - Memory image of Cache Contoller RPTM/GSN register.
*/
typedef struct CCdevRTPM {
unsigned int :12;
unsigned int addr :20; /* Address */
unsigned char gsn; /* GSN */
unsigned int :24; /* padding. */
} CCdevRTPM;
/*
* CCdevREG38 - Memory image of Cache Contoller 38 bit registers
*/
typedef struct CCdevREG38 {
unsigned int low; /* Low 32 bits */
unsigned char high :6; /* High 6 bits */
unsigned int :26;
} CCdevREG38;
/*
* CCdev - Memory image of Cache Controller registers.
*/
typedef struct CCdev {
CCdevRTPM rtpm[4]; /* RPTM{0,1,2,3} */
CCdevREG38 gva; /* GVA */
CCdevREG38 pteva; /* PTEVA */
CCdevREG38 rpteva; /* RPTEVA */
CCdevREG38 g; /* G */
unsigned int t0_low; /* T0<31:0> */
unsigned int :32;
unsigned int t0_high; /* T0<63:32> */
unsigned int :32;
unsigned int t1; /* T1 */
unsigned int :32;
unsigned int t2; /* T2 */
unsigned int :32;
unsigned int istatus; /* Istatus */
unsigned int :32;
unsigned int imask; /* Imask */
unsigned int :32;
unsigned int festatus; /* FEStatus */
unsigned int :32;
unsigned char slotid; /* SlotId */
unsigned char mode; /* Mode */
unsigned int :16;
unsigned int :32;
CCdevCounters c[16]; /* C0 thru C15 */
} CCdev;
/*
* A structure containing the 64bit version of the c0 thru c15 counters.
*/
typedef struct CCdev64bitCounter {
unsigned int low; /* Low 32 bit of value. */
unsigned int high; /* High 32 bit of value. */
} CCdev64bitCounter;
/*
* The memory image of the processed cache controler device.
*/
typedef struct PCCdev {
CCdev64bitCounter t0; /* The t0 64 bit free running counter */
CCdev64bitCounter c[16]; /* Counter c0 thru c15. */
} PCCdev[MACH_MAX_NUM_PROCESSORS];
/*
* Compute offsets of a register.
*/
#define CC_OFFSET_OF(field) ((int)&(((CCdev *) 0)->field))
/*
* Smallest user writtable offset - nothing below the first counter.
*/
#define DEV_CC_MIN_USER_OFFSET (CC_OFFSET_OF(c[0]))
#endif _DEVCC_H
@
1.2
log
@Fixed structure of slot id.
@
text
@d15 1
a15 1
* $Header: /sprite/src/lib/include.new/dev/RCS/ccdev.h,v 1.1 88/10/17 10:50:03 mendel Exp Locker: mendel $ SPRITE (Berkeley)
d21 1
d134 16
@
1.1
log
@Initial revision
@
text
@d15 1
a15 1
* $Header: proto.h,v 1.2 88/03/11 08:39:40 ouster Exp $ SPRITE (Berkeley)
d21 1
a21 1
#include "kernel/devCounter.h"
d116 1
d127 1
a127 2
unsigned char slotid :3; /* SlotId */
unsigned char :5;
@